import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.concurrent.CountDownLatch;

public class Main {

    public static void main(String[] args) {

    int[] arr = new int[10];
    Arrays.fill(arr, 2021);
    int num = 1;
    int count = 0;
    while (isK(arr)){
        if (delete(arr,num,count)){
            num++;
        }
        }
        System.out.println(num-1);
    }
    public static boolean isK(int[] arr){
        for (int i = 0; i < arr.length; i++){
            if (arr[i] == 0){
                return false;
            }
        }
        return true;
    }
    public static boolean delete(int[] arr, int n,int count){
        int temp = n;
        while (n != 0){
            temp = n % 10;
            for (int j = 0; j < arr.length; j++) {
                if (arr[j] == 0){
                    return false;
                }
                if (j == temp ) {
                    arr[j] = arr[j] - 1;
                }
            }
            n = n / 10;
        }
    return true;
    }
}
//public class Main {
//
//    public static void main(String[] args) {
//        // 卡片 1 肯定是最先耗尽的
//        int cnt = 0;
//        String str = "";
//        int index = 0;
//        int num = 1;
//        for(;cnt <= 3;num++) {
//            str += num;
//            for (;index < str.length(); index++) {
//                if (str.charAt(index) == '1') {
//                    cnt++;
//                }
//            }
//
//        }
//        // 由于结束循环 num 还会 +1 故实际的 num 应为 num -1
//        if (cnt == 2021) System.out.println(num - 1);
//        else System.out.println(num - 2);
//    }
//
//}
//public class Main {
//    public static void main(String[] args) {
//
//           Scanner scanner = new Scanner(System.in);
//           int n = scanner.nextInt();
//           int count = 0;
//
//        System.out.println(count);
//
//    }
//}
